home *** CD-ROM | disk | FTP | other *** search
- //: AllOps.java
- //////////////////////////////////////////////////
- // Copyright (c) Bruce Eckel, 1998
- // Source code file from the book "Thinking in Java"
- // All rights reserved EXCEPT as allowed by the
- // following statements: You can freely use this file
- // for your own work (personal or commercial),
- // including modifications and distribution in
- // executable form only. Permission is granted to use
- // this file in classroom situations, including its
- // use in presentation materials, as long as the book
- // "Thinking in Java" is cited as the source.
- // Except in classroom situations, you cannot copy
- // and distribute this code; instead, the sole
- // distribution point is http://www.BruceEckel.com
- // (and official mirror sites) where it is
- // freely available. You cannot remove this
- // copyright and notice. You cannot distribute
- // modified versions of the source code in this
- // package. You cannot use this file in printed
- // media without the express permission of the
- // author. Bruce Eckel makes no representation about
- // the suitability of this software for any purpose.
- // It is provided "as is" without express or implied
- // warranty of any kind, including any implied
- // warranty of merchantability, fitness for a
- // particular purpose or non-infringement. The entire
- // risk as to the quality and performance of the
- // software is with you. Bruce Eckel and the
- // publisher shall not be liable for any damages
- // suffered by you or any third party as a result of
- // using or distributing software. In no event will
- // Bruce Eckel or the publisher be liable for any
- // lost revenue, profit, or data, or for direct,
- // indirect, special, consequential, incidental, or
- // punitive damages, however caused and regardless of
- // the theory of liability, arising out of the use of
- // or inability to use software, even if Bruce Eckel
- // and the publisher have been advised of the
- // possibility of such damages. Should the software
- // prove defective, you assume the cost of all
- // necessary servicing, repair, or correction. If you
- // think you've found an error, please email all
- // modified files with clearly commented changes to:
- // Bruce@EckelObjects.com. (Please use the same
- // address for non-code errors found in the book.)
- /////////////////////////////////////////////////
-
- // Tests all the operators on all the
- // primitive data types to show which
- // ones are accepted by the Java compiler.
-
- class AllOps {
- // To accept the results of a boolean test:
- void f(boolean b) {}
- void boolTest(boolean x, boolean y) {
- // Arithmetic operators:
- //! x = x * y;
- //! x = x / y;
- //! x = x % y;
- //! x = x + y;
- //! x = x - y;
- //! x++;
- //! x--;
- //! x = +y;
- //! x = -y;
- // Relational and logical:
- //! f(x > y);
- //! f(x >= y);
- //! f(x < y);
- //! f(x <= y);
- f(x == y);
- f(x != y);
- f(!y);
- x = x && y;
- x = x || y;
- // Bitwise operators:
- //! x = ~y;
- x = x & y;
- x = x | y;
- x = x ^ y;
- //! x = x << 1;
- //! x = x >> 1;
- //! x = x >>> 1;
- // Compound assignment:
- //! x += y;
- //! x -= y;
- //! x *= y;
- //! x /= y;
- //! x %= y;
- //! x <<= 1;
- //! x >>= 1;
- //! x >>>= 1;
- x &= y;
- x ^= y;
- x |= y;
- // Casting:
- //! char c = (char)x;
- //! byte B = (byte)x;
- //! short s = (short)x;
- //! int i = (int)x;
- //! long l = (long)x;
- //! float f = (float)x;
- //! double d = (double)x;
- }
- void charTest(char x, char y) {
- // Arithmetic operators:
- x = (char)(x * y);
- x = (char)(x / y);
- x = (char)(x % y);
- x = (char)(x + y);
- x = (char)(x - y);
- x++;
- x--;
- x = (char)+y;
- x = (char)-y;
- // Relational and logical:
- f(x > y);
- f(x >= y);
- f(x < y);
- f(x <= y);
- f(x == y);
- f(x != y);
- //! f(!x);
- //! f(x && y);
- //! f(x || y);
- // Bitwise operators:
- x= (char)~y;
- x = (char)(x & y);
- x = (char)(x | y);
- x = (char)(x ^ y);
- x = (char)(x << 1);
- x = (char)(x >> 1);
- x = (char)(x >>> 1);
- // Compound assignment:
- x += y;
- x -= y;
- x *= y;
- x /= y;
- x %= y;
- x <<= 1;
- x >>= 1;
- x >>>= 1;
- x &= y;
- x ^= y;
- x |= y;
- // Casting:
- //! boolean b = (boolean)x;
- byte B = (byte)x;
- short s = (short)x;
- int i = (int)x;
- long l = (long)x;
- float f = (float)x;
- double d = (double)x;
- }
- void byteTest(byte x, byte y) {
- // Arithmetic operators:
- x = (byte)(x* y);
- x = (byte)(x / y);
- x = (byte)(x % y);
- x = (byte)(x + y);
- x = (byte)(x - y);
- x++;
- x--;
- x = (byte)+ y;
- x = (byte)- y;
- // Relational and logical:
- f(x > y);
- f(x >= y);
- f(x < y);
- f(x <= y);
- f(x == y);
- f(x != y);
- //! f(!x);
- //! f(x && y);
- //! f(x || y);
- // Bitwise operators:
- x = (byte)~y;
- x = (byte)(x & y);
- x = (byte)(x | y);
- x = (byte)(x ^ y);
- x = (byte)(x << 1);
- x = (byte)(x >> 1);
- x = (byte)(x >>> 1);
- // Compound assignment:
- x += y;
- x -= y;
- x *= y;
- x /= y;
- x %= y;
- x <<= 1;
- x >>= 1;
- x >>>= 1;
- x &= y;
- x ^= y;
- x |= y;
- // Casting:
- //! boolean b = (boolean)x;
- char c = (char)x;
- short s = (short)x;
- int i = (int)x;
- long l = (long)x;
- float f = (float)x;
- double d = (double)x;
- }
- void shortTest(short x, short y) {
- // Arithmetic operators:
- x = (short)(x * y);
- x = (short)(x / y);
- x = (short)(x % y);
- x = (short)(x + y);
- x = (short)(x - y);
- x++;
- x--;
- x = (short)+y;
- x = (short)-y;
- // Relational and logical:
- f(x > y);
- f(x >= y);
- f(x < y);
- f(x <= y);
- f(x == y);
- f(x != y);
- //! f(!x);
- //! f(x && y);
- //! f(x || y);
- // Bitwise operators:
- x = (short)~y;
- x = (short)(x & y);
- x = (short)(x | y);
- x = (short)(x ^ y);
- x = (short)(x << 1);
- x = (short)(x >> 1);
- x = (short)(x >>> 1);
- // Compound assignment:
- x += y;
- x -= y;
- x *= y;
- x /= y;
- x %= y;
- x <<= 1;
- x >>= 1;
- x >>>= 1;
- x &= y;
- x ^= y;
- x |= y;
- // Casting:
- //! boolean b = (boolean)x;
- char c = (char)x;
- byte B = (byte)x;
- int i = (int)x;
- long l = (long)x;
- float f = (float)x;
- double d = (double)x;
- }
- void intTest(int x, int y) {
- // Arithmetic operators:
- x = x * y;
- x = x / y;
- x = x % y;
- x = x + y;
- x = x - y;
- x++;
- x--;
- x = +y;
- x = -y;
- // Relational and logical:
- f(x > y);
- f(x >= y);
- f(x < y);
- f(x <= y);
- f(x == y);
- f(x != y);
- //! f(!x);
- //! f(x && y);
- //! f(x || y);
- // Bitwise operators:
- x = ~y;
- x = x & y;
- x = x | y;
- x = x ^ y;
- x = x << 1;
- x = x >> 1;
- x = x >>> 1;
- // Compound assignment:
- x += y;
- x -= y;
- x *= y;
- x /= y;
- x %= y;
- x <<= 1;
- x >>= 1;
- x >>>= 1;
- x &= y;
- x ^= y;
- x |= y;
- // Casting:
- //! boolean b = (boolean)x;
- char c = (char)x;
- byte B = (byte)x;
- short s = (short)x;
- long l = (long)x;
- float f = (float)x;
- double d = (double)x;
- }
- void longTest(long x, long y) {
- // Arithmetic operators:
- x = x * y;
- x = x / y;
- x = x % y;
- x = x + y;
- x = x - y;
- x++;
- x--;
- x = +y;
- x = -y;
- // Relational and logical:
- f(x > y);
- f(x >= y);
- f(x < y);
- f(x <= y);
- f(x == y);
- f(x != y);
- //! f(!x);
- //! f(x && y);
- //! f(x || y);
- // Bitwise operators:
- x = ~y;
- x = x & y;
- x = x | y;
- x = x ^ y;
- x = x << 1;
- x = x >> 1;
- x = x >>> 1;
- // Compound assignment:
- x += y;
- x -= y;
- x *= y;
- x /= y;
- x %= y;
- x <<= 1;
- x >>= 1;
- x >>>= 1;
- x &= y;
- x ^= y;
- x |= y;
- // Casting:
- //! boolean b = (boolean)x;
- char c = (char)x;
- byte B = (byte)x;
- short s = (short)x;
- int i = (int)x;
- float f = (float)x;
- double d = (double)x;
- }
- void floatTest(float x, float y) {
- // Arithmetic operators:
- x = x * y;
- x = x / y;
- x = x % y;
- x = x + y;
- x = x - y;
- x++;
- x--;
- x = +y;
- x = -y;
- // Relational and logical:
- f(x > y);
- f(x >= y);
- f(x < y);
- f(x <= y);
- f(x == y);
- f(x != y);
- //! f(!x);
- //! f(x && y);
- //! f(x || y);
- // Bitwise operators:
- //! x = ~y;
- //! x = x & y;
- //! x = x | y;
- //! x = x ^ y;
- //! x = x << 1;
- //! x = x >> 1;
- //! x = x >>> 1;
- // Compound assignment:
- x += y;
- x -= y;
- x *= y;
- x /= y;
- x %= y;
- //! x <<= 1;
- //! x >>= 1;
- //! x >>>= 1;
- //! x &= y;
- //! x ^= y;
- //! x |= y;
- // Casting:
- //! boolean b = (boolean)x;
- char c = (char)x;
- byte B = (byte)x;
- short s = (short)x;
- int i = (int)x;
- long l = (long)x;
- double d = (double)x;
- }
- void doubleTest(double x, double y) {
- // Arithmetic operators:
- x = x * y;
- x = x / y;
- x = x % y;
- x = x + y;
- x = x - y;
- x++;
- x--;
- x = +y;
- x = -y;
- // Relational and logical:
- f(x > y);
- f(x >= y);
- f(x < y);
- f(x <= y);
- f(x == y);
- f(x != y);
- //! f(!x);
- //! f(x && y);
- //! f(x || y);
- // Bitwise operators:
- //! x = ~y;
- //! x = x & y;
- //! x = x | y;
- //! x = x ^ y;
- //! x = x << 1;
- //! x = x >> 1;
- //! x = x >>> 1;
- // Compound assignment:
- x += y;
- x -= y;
- x *= y;
- x /= y;
- x %= y;
- //! x <<= 1;
- //! x >>= 1;
- //! x >>>= 1;
- //! x &= y;
- //! x ^= y;
- //! x |= y;
- // Casting:
- //! boolean b = (boolean)x;
- char c = (char)x;
- byte B = (byte)x;
- short s = (short)x;
- int i = (int)x;
- long l = (long)x;
- float f = (float)x;
- }
- } ///:~